perm filename CARS.SAI[0,BGB] blob sn#064442 filedate 1973-10-03 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00003 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	BEGIN "CARS"
 00003 00003	INTEGER I,J,N,NSUM,N1,N2,M
 00004 ENDMK
⊗;
BEGIN "CARS"
	SAFE REAL ARRAY X,Y,Z[-2:1000];
	SAFE INTEGER ARRAY RAN5[0:255];
	INTEGER RAN1,RAN2,RAN3,RAN4,INITFLG;
SIMPLE PROCEDURE RANDOMI;
BEGIN	"INIT"
	INTEGER I;
	RAN1←1;
	RAN2←3; 
	FOR I←0 STEP 1 UNTIL 255 DO
	RAN5[I]←RAN2←(RAN2*3)MOD 2↑31 ;
	INITFLG	←	TRUE;
END	"INIT";

SIMPLE INTERNAL REAL PROCEDURE RANDOM;
BEGIN	"RANDOM"
	IF INITFLG THEN ELSE RANDOMI;
	START_CODE MOVE 1,RAN2;MULI 1,1756;IDIVI 2,8191;MOVEM 3,RAN1;END;
COMMENT	RAN1←(RAN2*1756) MOD 8191;
	RAN3←RAN1 DIV 32;
	RAN4←RAN5[RAN3];
	RAN2←RAN5[RAN3]←(RAN2*3)MOD 2↑31;
	RETURN(RAN4/2↑31)
END	"RANDOM";
INTEGER I,J,N,NSUM,N1,N2,M;
RECURSIVE PROCEDURE PARK(REAL XLO,XHI);
BEGIN
	REAL Q;
	IF (XHI-XLO)<1.0 THEN RETURN;
	N ← N+1;
	Q ← (XHI-XLO-1)*RANDOM + XLO + 0.5;
	PARK(XLO,Q-0.5);PARK(Q+0.5,XHI);
END;

FOR I←1 STEP 1 UNTIL 1000 DO
BEGIN
	N2←N1; N1←N; N←0;
	PARK(0.0,100.0);
	NSUM ← NSUM + N;
	X[I] ← NSUM/I;
	Y[I] ← X[I-2] - (X[I-1]-X[I-2])↑2/(X[I]-2*X[I-1]+X[I-2]);
	Z[I] ← Y[I-2] - (Y[I-1]-Y[I-2])↑2/(Y[I]-2*Y[I-1]+Y[I-2]);
	OUTSTR(CVS(I)&9&CVS(N)&9&CVG(NSUM/I)&9&CVG(Y[I])&9&CVG(Z[I])&13&10);
END;
END "CARS";